package com.sunseagear.common.base.mvc.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.sunseagear.common.base.mvc.entity.TreeEntity;

import java.io.Serializable;
import java.util.List;

public interface ITreeCommonService<T extends TreeEntity<ID>, ID extends Serializable>
        extends ICommonService<T> {

    /**
     * 获取树形表
     *
     * @param wrapper: 条件构造器
     * @return 数据列表
     */
    List<T> selectTreeList(Wrapper<T> wrapper);

    /**
     * 获取自己和祖先节点
     *
     * @param id: 节点ID
     * @return 数据列表
     */
    List<ID> getParentIdsAndSelf(ID id);

    /**
     * 获取自己和子孙节点
     *
     * @param id: 节点ID
     * @return 数据列表
     */
    List<ID> getChildrenIdsAndSelf(ID id);

    /**
     * 获取祖先节点
     *
     * @param id: 节点ID
     * @return 数据列表
     */
    List<ID> getParentIds(ID id);

    /**
     * 获取子孙节点
     *
     * @param id: 节点ID
     * @return 数据列表
     */
    List<ID> getChildrenIds(ID id);
}
